/**
 * 
 */
package cn.ad.server.web.spring.model.adview;

import cn.ad.server.web.spring.model.BidAdRequest;

import java.util.Set;

/**
 * AdView 平台BidRequest请求对象
 * 
 * @author Administrator
 */
public class AdViewBidRequest extends BidAdRequest {

	/**
	 * 竞拍类型
	 * 
	 * @author Administrator
	 */
	public enum AT {
		/**
		 * 0 – 最高价格成交(参与竞价)
		 */
		HIGHEST,
		/**
		 * 1 – 以次高价格成交（参与竞价）
		 */
		SECOND,
		/**
		 * 2 – 优先购买(不参与竞价)
		 */
		PRIORITY;
	}

	/**
	 * 广告请求唯一标识，由AdView生成
	 */
	private String id;

	/**
	 * 需要广告的描述
	 */
	private AdViewImpression[] imp;

	/**
	 * 应用信息
	 */
	private App app;

	/**
	 * 设备信息
	 */
	private Device device;

	/**
	 * 私有交易
	 */
	private Pmp pmp;

	/**
	 * 用户信息
	 */
	private User user;

	/**
	 * 竞拍类型
	 */
	private AT at;

	/**
	 * 超时时间， 单位毫秒
	 */
	private int tmax;

	/**
	 * 广告主缩略名称数组，只接受这些广告主,例如: ["4"]
	 * 
	 */
	private String[] weat;

	/**
	 * 广告创意数组，代表本次请求只接受这些创意
	 */
	private Set<String> wcid;

	/**
	 * 允许结算的方式，包括以下： CPM CPC 例如：["CPM","CPC"]
	 */
	private String[] cur;

	/**
	 * 拒绝接受的行业广告类型, 参考《AdView移动广告交易平台RTB接口协议_V2.3.0.1》附录1
	 */
	private String[] bcat;

	/**
	 * 拒绝接受的广告主名单，采用域名标示广告主
	 */
	private String[] badv;

	/**
	 * IOS 的激活回调 url，仅对下载IOS 类广告有效。
	 */
	private String callback;

	/**
	 * 扩展内容
	 */
	private Object ext;

	private boolean debugMode;

	public boolean isDebugMode() {
		return debugMode;
	}

	public void setDebugMode(boolean debugMode) {
		this.debugMode = debugMode;
	}

	/**
	 * @return the id
	 */
	public String getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(String id) {
		this.id = id;
	}

	public AdViewImpression[] getImp() {
		return imp;
	}

	public void setImp(AdViewImpression[] imp) {
		this.imp = imp;
	}

	/**
	 * @return the app
	 */
	public App getApp() {
		return app;
	}

	/**
	 * @param app
	 *            the app to set
	 */
	public void setApp(App app) {
		this.app = app;
	}

	/**
	 * @return the device
	 */
	public Device getDevice() {
		return device;
	}

	/**
	 * @param device
	 *            the device to set
	 */
	public void setDevice(Device device) {
		this.device = device;
	}

	/**
	 * @return the pmp
	 */
	public Pmp getPmp() {
		return pmp;
	}

	/**
	 * @param pmp
	 *            the pmp to set
	 */
	public void setPmp(Pmp pmp) {
		this.pmp = pmp;
	}

	/**
	 * @return the user
	 */
	public User getUser() {
		return user;
	}

	/**
	 * @param user
	 *            the user to set
	 */
	public void setUser(User user) {
		this.user = user;
	}

	/**
	 * @return the at
	 */
	public AT getAt() {
		return at;
	}

	/**
	 * @param at
	 *            the at to set
	 */
	public void setAt(AT at) {
		this.at = at;
	}

	/**
	 * @return the tmax
	 */
	public int getTmax() {
		return tmax;
	}

	/**
	 * @param tmax
	 *            the tmax to set
	 */
	public void setTmax(int tmax) {
		this.tmax = tmax;
	}

	public String[] getWeat() {
		return weat;
	}

	public void setWeat(String[] weat) {
		this.weat = weat;
	}

	/**
	 * @return the wcid
	 */
	public Set<String> getWcid() {
		return wcid;
	}

	/**
	 * @param wcid
	 *            the wcid to set
	 */
	public void setWcid(Set<String> wcid) {
		this.wcid = wcid;
	}

	/**
	 * @return the cur
	 */
	public String[] getCur() {
		return cur;
	}

	/**
	 * @param cur
	 *            the cur to set
	 */
	public void setCur(String[] cur) {
		this.cur = cur;
	}

	/**
	 * @return the bcat
	 */
	public String[] getBcat() {
		return bcat;
	}

	/**
	 * @param bcat
	 *            the bcat to set
	 */
	public void setBcat(String[] bcat) {
		this.bcat = bcat;
	}

	/**
	 * @return the badv
	 */
	public String[] getBadv() {
		return badv;
	}

	/**
	 * @param badv
	 *            the badv to set
	 */
	public void setBadv(String[] badv) {
		this.badv = badv;
	}

	/**
	 * @return the callback
	 */
	public String getCallback() {
		return callback;
	}

	/**
	 * @param callback
	 *            the callback to set
	 */
	public void setCallback(String callback) {
		this.callback = callback;
	}

	/**
	 * @return the ext
	 */
	public Object getExt() {
		return ext;
	}

	/**
	 * @param ext
	 *            the ext to set
	 */
	public void setExt(Object ext) {
		this.ext = ext;
	}
}
